package backdate;
//https://leetcode.cn/leetbook/read/illustration-of-algorithm/9h44cj/
//请设计一个机械累加器，计算从 1、2... 一直累加到目标数值 target 的总和。
// 注意这是一个只能进行加法操作的程序，不具备乘除、if-else、switch-case、for 循环、while 循环，及条件判断语句等高级功能。
public class LCR_189设计机械累加器 {
    //逻辑运算符的短路效应
    class Solution {
        public int mechanicalAccumulator(int target) {
            boolean x = target > 0 && (target += mechanicalAccumulator(target - 1)) > 0;
            return target;
        }
    }
    //递归
    class Solution2 {
        //方法1
        private int add(int target){
            if(target == 1) return 1;
            return add(target - 1) + target;
        }
        public int mechanicalAccumulator1(int target) {
            return add(target);
        }
        //方法2
        public int mechanicalAccumulator(int target) {
            if(target == 1) return 1;
            target += mechanicalAccumulator(target - 1);
            return target;
        }
    }

}
